package com.ibeeking.found.cms.cp.rest.service;

import com.ibeeking.found.cms.service.common.bo.PageTemplateBaseBO;
import com.ibeeking.found.cms.service.common.bo.PageTemplateModuleBO;
import com.ibeeking.found.cms.service.common.param.PageTemplateModuleParam;
import com.ibeeking.found.cms.service.common.query.PageModulePageQuery;
import com.ibeeking.found.cms.service.common.query.PageModuleQuery;
import com.ibeeking.found.cms.service.common.query.PageTemplatePageQuery;
import com.ibeeking.found.cms.service.common.vo.PageModuleAllView;
import com.ibeeking.found.cms.service.common.vo.PageModuleVO;
import com.ibeeking.found.cms.service.common.vo.PageTemplateVO;
import com.ibeeking.found.common.entity.CurrentUser;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;
import java.util.Set;


/**
 * IPageModuleService
 *
 * @Author ibeeking
 * @Date 2021-05-08 16:03
 */
public interface IPageTemplateModuleService {

    /***
     * 查询列表
     */
    List<PageTemplateModuleBO> list(PageModuleQuery pageModuleQuery);

    /***
     * 根据pageIds查询列表
     */
    List<PageTemplateModuleBO> selByPageId(Set<Long> pageIds);

    /***
     * 分页查询
     */
    Page<PageModuleVO> pageList(PageModulePageQuery pageModulePageQuery);


    /***
     * 通过pageId查询
     */
    PageModuleAllView viewByPageId(Long pageId);

    /**
     * 通过页面类别查询
     *
     * @param pageBaseBO
     * @return
     */
    PageModuleAllView baseView(PageTemplateBaseBO pageBaseBO, List<PageTemplateModuleBO> pageModuleBOS);

    /**
     * 页面
     *
     * @param param
     * @return
     */
    Page<PageModuleAllView> pageTemplateViewPageList(PageTemplatePageQuery param, CurrentUser currentUser);

    Page<PageTemplateVO> pageTemplatePageList(PageTemplatePageQuery param, CurrentUser currentUser);

    /***
     * 修改状态
     */
    Boolean changeStatus(Long id, Integer status);

    /***
     * 通过id删除
     */
    Boolean del(Long id);

    /***
     * 通过pageId删除
     */
    Boolean delByPageId(Long pageId);

    /***
     * 通过pageId查询
     */
    List<PageTemplateModuleBO> selByPageId(Long pageId);

    /**
     * 添加
     *
     * @param paramList
     * @return
     */
    Boolean addList(List<PageTemplateModuleParam> paramList);
}